#!/bin/bash

# 启动演示脚本
echo "=== Learn Go Demo 启动脚本 ==="

# 检查 Docker 是否运行
if ! docker info > /dev/null 2>&1; then
    echo "错误: Docker 未运行，请先启动 Docker"
    exit 1
fi

# 启动数据库和 etcd
echo "1. 启动 MySQL 和 etcd..."
docker-compose up -d

# 等待服务启动
echo "2. 等待服务启动..."
sleep 10

# 检查 MySQL 是否就绪
echo "3. 检查 MySQL 连接..."
for i in {1..30}; do
    if docker exec learn-go-demo-mysql mysqladmin ping -h localhost -u root -ppassword --silent 2>/dev/null; then
        echo "MySQL 已就绪"
        break
    fi
    if [ $i -eq 30 ]; then
        echo "错误: MySQL 启动超时"
        exit 1
    fi
    echo "等待 MySQL 启动... ($i/30)"
    sleep 2
done

# 检查 etcd 是否就绪
echo "4. 检查 etcd 连接..."
for i in {1..30}; do
    if curl -s http://localhost:2379/health > /dev/null 2>&1; then
        echo "etcd 已就绪"
        break
    fi
    if [ $i -eq 30 ]; then
        echo "警告: etcd 启动超时，但可能仍在启动中"
        echo "你可以手动检查: curl http://localhost:2379/health"
        break
    fi
    echo "等待 etcd 启动... ($i/30)"
    sleep 3
done

echo "5. 所有依赖服务已启动完成！"
echo ""
echo "现在可以启动应用服务："
echo "  - 用户服务: make user"
echo "  - 订单服务: make order"
echo "  - 测试客户端: make client"
echo ""
echo "或者使用以下命令停止所有服务："
echo "  make db-down"
